Traffic shaping is a computer network traffic management technique for delaying some or all packets (also referred to as “datagrams,” or “data packets”) to bring the packets into compliance with a desired traffic control policy. Traffic shaping is used to optimize or guarantee performance, improve latency, and/or increase usable bandwidth for some types of packets by delaying the distribution of other packets. Traffic shaping often categorizes traffic into different classes such that one type of traffic can be transmitted before or after another type of traffic.
The Linux operating system offers a rich set of tools for managing and manipulating the transmission of packets. Linux includes a feature known as “traffic control,” which enables Internet traffic to be classified by various criteria. This traffic control system has matured under more recent versions of the Linux kernel. After a packet is classified, it can be queued to software entities known as queuing disciplines, or “qdiscs,” that cause packets to be transmitted at no more than a given rate. Qdiscs cause traffic to be queued, and by using “classful qdiscs,” packets can be prioritized with respect to other packets. Further, in some cases, network bandwidth can be guaranteed to packets belonging to specific classes.
One problem with the standard Linux traffic control system is that the handles used to identify qdiscs can only be referenced by a set of hexadecimal digits between 1 and ffff (i.e., 64K−1, which for purposes of brevity will be referred to as 64K herein). Thus, the number of qdiscs that can be assigned to a given network device is limited to 64K. As the number of client devices, such as mobile phones, and the amount of traffic being sent everyday over networks increases, only being able to access 64K qdiscs can become problematic. Thus, an alternative approach is needed in the art.